package com.fkcai.hansoul.service;

import com.fkcai.hansoul.model.dto.post.PostCommentDto;
import com.fkcai.hansoul.model.dto.post.PostCreateDto;
import com.fkcai.hansoul.model.dto.post.PostDraftDto;
import com.fkcai.hansoul.model.vo.post.GetPostVo;
import com.fkcai.hansoul.model.vo.post.PostBaseInfoVo;
import com.fkcai.hansoul.model.vo.post.PostCommentVo;
import com.fkcai.hansoul.model.vo.post.PostFullInfoVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 用户发帖业务逻辑接口
 */
public interface PostService {
	/**
	 * 创建帖子
	 *
	 * @param request 帖子信息
	 * @param images  图片列表
	 */
	PostBaseInfoVo createPost (PostCreateDto request, List<MultipartFile> images);
	
	/**
	 * 创建草稿
	 *
	 * @param request 草稿信息
	 * @param images  图片列表
	 */
	PostBaseInfoVo createPostDraft (PostDraftDto request, List<MultipartFile> images);
	
	/**
	 * 根据用户 id 获取帖子
	 *
	 * @param userId 用户 id
	 */
	List<GetPostVo> getPostsByUserId (Integer userId);
	
	/**
	 * 根据帖子 id 获取帖子
	 *
	 * @param postId 帖子 id
	 */
	PostFullInfoVo getPostByPostId (Integer postId);
	
	/**
	 * 根据分类 id 获取帖子
	 *
	 * @param categoryId 分类 id
	 */
	List<GetPostVo> getPostsByCategoryId (Integer categoryId, int page, int size);
	
	/**
	 * 获取所有帖子
	 * @param page 页码
	 * @param size 每页数量
	 * @return 所有帖子
	 */
	List<GetPostVo> getAllPosts (int page, int size);
	
	/**
	 * 获取分类帖子数量
	 * @param categoryId 分类 id
	 * @return 分类帖子数量
	 */
	Long countPosts (Integer categoryId);
}
